/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package nutriologo;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;


public class nutriologo {

    conec conn = new conec();
    Connection conexion;
    public boolean conectar(){
    
    try{
        /*------IMPORTANTE-----
        
        Es necesario importar la libreria de JDBC para crear la conexión con la base de datos,
        esto se hace desde netbeans:
        
        Pasos:
        
        Dar clic derecho en la carpeta de LIBRARIES --> seleccionar ADD JAR/Folder
        --> selccionar el archivo ojdbc5.jar localozado en la carpeta del proyecto
        
        Debera aparecer una nueva libreria con el simbolo de un bote dentro de
        carpeta libraries
        */
        
        /*Vinculo con el conector JDBC --> Si no se agrega la libreria
        No se procesara esta linea */
        DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
        //Cadena de conexión indicando el puerto de oracle 1521 y la versión XE
        String BaseDeDatos = "jdbc:oracle:thin:@localhost:1521:XE";
        //Indicar el no,bre del usuario y contraseña en esta caso
        conexion= DriverManager.getConnection(BaseDeDatos,"nutricion","nutricion");
        if(conexion!=null)
        {
            System.out.println("Conexion exitosa a esquema BASE");
            return true;
        }
        else{
            System.out.println("Conexion fallida");
        }
      }//Fin del try
        catch(Exception e)
        {
        System.out.println("error: " + e);    
        }//Fin del catch
  return false;
    } //Fin del metodo conectar

    public String altaclinico(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m, String n, String ñ, String o, String p, String q, String r, String s, String t, String u, String v, String w, String x, String y, String z) {
        try {
            if (conectar()) {
                CallableStatement cs = conexion.prepareCall("BEGIN clinico(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?); END;");
                cs.setString(1, a);
                cs.setString(2, b);
                cs.setString(3, c);
                cs.setString(4, d);
                cs.setString(5, e);
                cs.setString(6, f);
                cs.setString(7, g);
                cs.setString(8, h);
                cs.setString(9, i);
                cs.setString(10, j);
                cs.setString(11, k);
                cs.setString(12, l);
                cs.setString(13, m);
                cs.setString(14, n);
                cs.setString(15, ñ);
                cs.setString(16, o);
                cs.setString(17, p);
                cs.setString(18, q);
                cs.setString(19, r);
                cs.setString(20, s);
                cs.setString(21, t);
                cs.setString(22, u);
                cs.setString(23, v);
                cs.setString(24, w);
                cs.setString(25, x);
                cs.setString(26, y);
                cs.setString(27, z);
                cs.execute();
                conexion.close();
                return "Registro Guardado";
            } else {
                return "Registro no Guardado";
            }
        } catch (Exception ae) {
            return "Error al ejecutar el procedimiento: " + ae;
        }
    }

    public String alta_paciente(String a, String b, int c, String d, String e, String f, String g, String h) {
        try {
            if (conectar()) {
                CallableStatement cs;
                cs =conexion.prepareCall("begin altapaciente(?,?,?,?,?,?,?,?); end;");
                cs.setString(1, a);
                cs.setString(2, b);
                cs.setInt(3, c);
                cs.setString(4, d);
                cs.setString(5, e);
                cs.setString(6, f);
                cs.setString(7, g);
                cs.setString(8, h);
                cs.execute();
                conexion.close();
                return "Listo Guardado";
            } else {
                return "Error al insertar";
            }
        } catch (Exception ae) {
            return "Error de Procedimiento: " + ae;
        }
    }

    public String alta_historia(int a) {
        try {
            if (conectar()) {
                CallableStatement cs = null;
                cs = conexion.prepareCall("begin historialalta(?); end");
                cs.setInt(1, a);
                cs.execute();
                conexion.close();
                return "Listo Guardado";
            } else {
                return "Error al insertar";
            }
        } catch (Exception ae) {
            return "error al ejecutar procedimiento: " + ae;
        }

    }

    public String alta_imc(int a, int b, String c, int d) {
        try {
            if (conectar()) {
                CallableStatement cs = null;
                cs =conexion.prepareCall("BEGIN hist_imc(?,?,?,?); END;");
                cs.setInt(1,a);
                cs.setInt(2,b);
                cs.setString(3,c);
                cs.setInt(4,d);
                cs.execute();
                conexion.close();
                return "Listo Guardado";
            } else {
                return "Error al insertar";
            }
        } catch (Exception ae) {
            return "error al ejecutar procedimiento: " + ae;
        }
    }
    
    public String Baja_paciente(String a){
        try{
             if (conectar()) {
             CallableStatement cs = null;
                cs =conexion.prepareCall("BEGIN baja_paciente(?); END;");
                cs.setString(1, a);
                cs.execute();
                conexion.close();
            return "Baja realizada con exito";
             } else {
                return "Error al dar baja";
            }
        }catch(Exception ae){
            return "Error de procedimiento "+ ae;
        }
    }
    
    public String alta_dieta(String a,String b, String c, String d){
       try{
             if (conectar()) {
             CallableStatement cs = null;
                cs =conexion.prepareCall("BEGIN DIETAALTA(?,?,?,?); END;");
                cs.setString(1, a);
                cs.setString(1, b);
                cs.setString(1, c);
                cs.setString(1, d);
                cs.execute();
                conexion.close();
            return "Baja realizada con exito";
             } else {
                return "Error al dar baja";
            }
        }catch(Exception ae){
            return "Error de procedimiento "+ ae;
        }  
    }
    
    public ResultSet consultar(){
       /*
        ResultSet:Almacena todas las finalas retornadas por el select. Proporciona
        acceso a los datos de las filas mediante metodos get.
        Statement: Permite el envio y ejecución de sentencias SQL.
        executeQuery:Método del statement utilizado para ejecutar instrucciones select.
        */
        
        ResultSet rs=null; 
        
        try{      
        String sql="Select * from PACIENTE";
        if (conectar()){
        Statement stt=conexion.createStatement();
        rs=stt.executeQuery(sql);
        }
        return rs;
  }
  catch(Exception e){
    System.out.print("Error al consultar: " + e);
  }
     return rs;
    }
}
